#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <unistd.h>
#include <signal.h>

// 想知道进程pid(两个头文件)
#include <sys/types.h>
// #include<unistd.h>

// 处理信号
void handlerSig(int sig)   
{
    std::cout << "我获得了一个信号:" << sig << std::endl;
    exit(1);    //测野指针和除0    需要加上这句
} 

int main()
{
    // signal(SIGINT, handlerSig);
    // // 默认2号信号为终止，修改为handlerSig   收到二号信号会调用handlerSig   正常情况ctrl + c是终止（2号信号）   把终止信号给修改了
    // // 自定义捕捉  动作

//捕捉所有信号
    for(int i = 1;i < 32;i++)
        signal(i,handlerSig); 

//测试自己给自己发信号
    // for(int i = 1;i<32;i++)
    // {
    //     sleep(1);
    //     if(i==9)
    //     {
    //         continue;
    //     }
    //     raise(i);
    // }

    int cnt = 0;
    while (true)
    {
        std::cout << "hello world," << cnt++ << ",pid: " << getpid() << std::endl;
        
    //测试除0    发送信号   8
        // int a = 10;
        // a /= 0;
        // sleep(1);

    //测试野指针    发送信号   11
        int *p = nullptr;
        *p = 100;

        // abort();     测试abort的发送代码
    }

    return 0;
}